敌机出场

目标

01. 使用定时器添加敌机

运行 备课代码观察 敌机的 出现规律

  1. 游戏启动后,每隔 1 秒出现一架敌机
  2. 每架敌机 向屏幕下方飞行,飞行 速度各不相同
  3. 每架敌机出现的 水平位置 也不尽相同
  4. 当敌机 从屏幕下方飞出,不会再飞回到屏幕中

1.1 定时器

 

定时器事件的监听

1.2 定义并监听创建敌机的定时器事件

pygame定时器 使用套路非常固定:

  1. 定义 定时器常量 —— eventid
  2. 初始化方法 中,调用 set_timer 方法 设置定时器事件
  3. 游戏循环 中,监听定时器事件

1) 定义事件

 
 

2) 监听定时器事件

 

02. 设计 Enemy

  1. 游戏启动后,每隔 1 秒出现一架敌机
  2. 每架敌机 向屏幕下方飞行,飞行 速度各不相同
  3. 每架敌机出现的 水平位置 也不尽相同
  4. 当敌机 从屏幕下方飞出,不会再飞回到屏幕中

014_派生Enemy子类-w657

2.1 敌机类的准备

 

2.2 创建敌机

演练步骤

  1. __create_sprites,添加 敌机精灵组

    • 敌机是 定时被创建的,因此在初始化方法中,不需要创建敌机
  2. __event_handler,创建敌机,并且 添加到精灵组

    • 调用 精灵组add 方法可以 向精灵组添加精灵
  3. __update_sprites,让 敌机精灵组 调用 updatedraw 方法

006_pygame.SpriteII

演练代码

 
 
 

2.3 随机敌机位置和速度

1) 导入模块

 
 

2) 随机位置

015_飞机初始位置-w360

使用 pygame.Rect 提供的 bottom 属性,在指定敌机初始位置时,会比较方便

3) 代码实现

 

2.4 移出屏幕销毁敌机

检测敌机被销毁

 

代码实现

006_pygame.SpriteII